#include "Spl_list.h"

/**
 * 函数名 Init_Sql_List
 * 参数 
 *      @L 需要初始化的 静态表
 * 返回值
 *      无
 * 功能
 *      对静态表进行初始化
 */
void Init_Sql_List(Sql_list * L) 
{
    memset(L->data ,0,50*sizeof(L->data[0]));
    L->len = 0;
};

/** 尾插
 * 函数名 tail_insert_list
 * 参数 
 *      @L 需要尾插的 静态表
 *      @data 需要插入的数据
 * 返回值
 *      无
 * 功能
 *      对静态表进行尾插
 */
void tail_insert_list(Sql_list * L, Elenemt_data data) 
{
    // 安全判断
    if (NULL == L)
    {
        printf("顺序表 为 NULL\n");
        return ;
    }
    if (MAX_SIZ == L->len)
    {
        printf("顺序表 为 满 \n");
        return ;
    }
    // 插入
    L->data[L->len]=data;
    // 迭代
    L->len++;
};

/** 尾删
 * 函数名 tail_del_list
 * 参数 
 *      @L 需要尾删的 静态表
 * 返回值
 *      无
 * 功能
 *      对静态表进行尾删
 */
void tail_del_list(Sql_list * L) 
{
    // 安全判断
    if (NULL == L)
    {
        printf("顺序表 为 NULL\n");
        return ;
    }
    if (0 == L->len)
    {
        printf("顺序表为空\n");
        return ;
    }
    // 删除
    L->len--;
};

/** 遍历打印
 * 函数名 printf_Sql_List
 * 参数 
 *      @L 需要遍历的 静态表
 * 返回值
 *      无
 * 功能
 *      对静态表进行尾插
 */

void printf_Sql_List(Sql_list * L)
{
    if (NULL == L)
    {
        printf("顺序表 为 NULL\n");
        return ;
    }
    if (0 == L->len)
    {
        printf("顺序表为空\n");
        return ;
    }
    for (size_t i = 0; i < L->len; i++)
    {
        printf("姓名:%s 性别:%s 年龄:%d 成绩:%d 学号:%d\n",
        L->data[i].name , L->data[i].sex , L->data[i].age , 
        L->data[i].sco  , L->data[i].id 
        );
    }
}

//顺序表 在哪一位上插入
void pos_insert_list(Sql_list * L , int index , Elenemt_data data)
{
    // 安全判断
    if (NULL == L)
    {
        printf("顺序表 为 NULL\n");
        return ;
    }
    if (MAX_SIZ == L->len)
    {
        printf("顺序表 为 满 \n");
        return ;
    }
    for (size_t i = (L->len); i > index-1 ; i--)
    {
        L->data[i] = L->data[i-1];
    }
    // 插入
    L->data[index-1]=data;
    // 迭代
    L->len++;
}
//顺序表 在哪一位上删除
void pos_del_list(Sql_list * L , int index)
{
    // 安全判断
    if (NULL == L)
    {
        printf("顺序表 为 NULL\n");
        return ;
    }
    if (0 == L->len)
    {
        printf("顺序表为空\n");
        return ;
    }
    for (size_t i = index-1 ; i < L->len ; i++)
    {
        L->data[i] = L->data[i+1];
    }
    L->len--;
}


// 顺序表的合并：
Sql_list * Merge_Sql_Lists(Sql_list * L1 , Sql_list * L2)
{


    
}

//顺序表的判空：
int IsEmpty_Sql_List(Sql_list * L)
{
    if (L->len==0)
    {
        return 0;
    }
    return 1;
}
//顺序表的清空：
void Clear_Sql_List(Sql_list * L)
{
    L->len=0;
}
